package cn.mugutu.webrtc.utils;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * Json和Java对象转换工具类,使用FastJson实现
 * @author gan
 *
 */
public class JsonUtil {

	/**
	 * 将java对象转化为Json字符串
	 */
	public static String ObjectToJSONString(Object o){
		if(o!=null) return JSON.toJSONString(o);
		return "";
	}
	
	/**
	 * 将Json字符串转化为Java对象
	 * @param jsonString Json字符串
	 * @param clazz  字节码
	 */
	public static<T> T JSONStringToObject(String jsonString,Class<T> clazz){
		if(StringUtils.isNotBlank(jsonString) && clazz!=null)
			return JSON.parseObject(jsonString, clazz);
		return null;
	}
	
	/**
	 * JsonArray 字符串转化为List<T>
	 * @return
	 */
	public static<T> List<T> JsonArrayToList(String jsonArrayString,Class<T> clazz){
		//将字符串转化为JsonArray对象
		JSONArray jsonArray = JSON.parseArray(jsonArrayString);
		List<T> list = new ArrayList<T>();
		for(int i=0;i<jsonArray.size();i++){
			JSON json = (JSON) jsonArray.get(i);
			T o = JSON.toJavaObject(json,clazz);
			list.add(o);
		}
		return list;
	}
	
	/**
	 * @param o 将Json字符串解析为一个JSONObject对象,便于获取里面的普通属性和数组属性
	 */
	public JSONObject parseObject(String o){
		return JSONObject.parseObject(o);
	}
}
